//权限拦截 导航守卫 路由守卫 router
import router from "@/router";  //引入路由实例
import store from '@/store'  //引入vuex store实例
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式
const whiteList = ['/login', '/404'] //定义白名单
router.beforeEach(async (to, from, next) => { //开启前置路由
    //next 是前置路由必须执行的钩子不执行页面就死了
    //next（） 放过 next(false)跳转终止 next（地址）跳转某个地址
    NProgress.start() //开启进度条
    if (store.getters.token) { //首先判断有没有token
        //   如果有token 继续判断是不是去登录页

        if (to.path === '/login') {
            //  表示去的是登录页
            next('/') // 跳到主页
        } else {
            if (!store.getters.userId) {
                // 如果没有id这个值 才会调用 vuex的获取资料的action
                await store.dispatch('user/getUserInfo')
                // 为什么要写await 因为我们想获取完资料再去放行
            }
            next() // 直接放行
        }
    } else {
        // 如果没有token
        if (whiteList.indexOf(to.path) > -1) {
            next()

        } else {
            next('/login') // 跳到登录页
        }
    }
    NProgress.done() // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
})
router.afterEach(function () {
    NProgress.done() // 关闭进度条
})